package com.innotek.testworkstation.util;

import lombok.extern.slf4j.Slf4j;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间相关功能工具类
 */
@Slf4j
public class Time {
    /**
     * 获取当前时间戳10位int 类型的数据
     *
     * @return
     */
    public static int getMark() {
        return (int) (Time.getTimeStamp() / 1000);
    }

    /**
     * 获取纳秒的时间标记
     *
     * @return
     */
    public static long getNanoMark() {
        return System.nanoTime();
    }


    /**
     * 获取calendar类对象，默认UTC时间
     *
     * @return
     */
    private static ThreadLocal calendar = new ThreadLocal() {
        @Override
        protected Calendar initialValue() {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            return calendar;
        }
    };

    /**
     * 获取时间戳，13位long类型
     *
     * @return
     */
    public static long getTimeStamp() {
        return System.currentTimeMillis();
    }


    /**
     * 获取时间差，以秒为单位
     *
     * @param start 开始时间
     * @param end   结束时间
     * @return
     */
    @Deprecated
    public static double getTimeDiffer(Date start, Date end) {
        return getTimeDiffer(start.getTime(), end.getTime());
    }

    /**
     * 重载，用long类型取代date
     *
     * @param start
     * @param end
     * @return
     */
    public static double getTimeDiffer(long start, long end) {
        return (end - start) / 1000.0;
    }


}
